package com.company.jvm.classloader;

import com.company.String.Stringtest;

/**
 * @ClassName LoaderTest
 * @Description TODO
 * @Author ylr
 * @Date 2021/7/20 16:06
 * @Version 1.0
 */
public class LoaderTest {
    public static void main(String[] args) {
        ClassLoader classLoader = Stringtest.class.getClassLoader();

        System.out.println(classLoader);

        System.out.println(classLoader.getResource(""));
        System.out.println(classLoader.getResource("/"));
        System.out.println(Stringtest.class.getClass().getResource(""));
        System.out.println(Stringtest.class.getClass().getResource("/"));

        try {
            //使用ClassLoader.loadClass()来加载类，不会执行初始化块
            classLoader.loadClass("com.company.jvm.classloader.ClassLoaderTest");
            System.out.println("---------使用ClassLoader.loadClass()来加载类，不会执行初始化块-------------");
            Class.forName("com.company.jvm.classloader.ClassLoaderTest");
            System.out.println("-----------使用ClassLoader.loadClass()来加载类，会执行初始化块---------");
            Class.forName("com.company.jvm.classloader.ClassLoaderTest",false,classLoader);
            System.out.println("-------------------使用Class.forName()来加载类，并指定ClassLoader，初始化时不执行静态块 \n-------------------");

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }
}
